#include "CabeceraHashing.h"


CabeceraHashing::CabeceraHashing() {
}

CabeceraHashing::~CabeceraHashing() {
}


unsigned int CabeceraHashing::getPosBloque(const RegistroHash& reg) const{
	return this->_tabDispersion.getPosBloque(reg);
}


void CabeceraHashing::overflowBloque(const RegistroHash& regOver, const BloqueHash& bloque, unsigned int posNewBloque){
	this->_tabDispersion.overflowBloque(regOver, bloque, posNewBloque);
}


unsigned int CabeceraHashing::getPosBloqueLibre(){
	// Devuelve un bloque al final del archivo
	return this->cantBloques++;
}


unsigned int CabeceraHashing::serialize(char* &arr){
	this->serInator.reset();

	this->serInator.serializar(arr, 'H');
	this->serInator.serializar(arr, this->cantBloques);
	
	char* buff = arr + this->serInator.getBufferSize();
	this->_tabDispersion.serializar(buff);

	return this->serInator.getBufferSize();
}


void CabeceraHashing::deSerialize(char* arr){
	this->serInator.reset();

	char firma = 'H';
	this->serInator.desSerializar(arr, firma);
	this->serInator.desSerializar(arr, this->cantBloques);
	
	char* buff = arr + this->serInator.getBufferSize();
	this->_tabDispersion.desSerializar(buff);
}


